class CopyUtil {
  /// 深拷贝包含 Map 的 List 的函数
  static List deepCopyListOfMaps(List original) {
    List copy = [];
    for (var map in original) {
      Map newMap = {};
      for (var entry in map.entries) {
        var key = entry.key;
        var value = entry.value;

        /// 检查值是否是 List，如果是，则递归深拷贝
        if (value is List) {
          value = deepCopyList(value);
        }

        /// 检查值是否是 Map，如果是，则递归深拷贝（注意：这里的 Map 已经是浅拷贝了，但我们需要确保内部的 List 或其他对象被深拷贝）
        else if (value is Map) {
          value = deepCopyMap(value);
        }

        newMap[key] = value;
      }
      copy.add(newMap);
    }
    return copy;
  }

  /// 辅助函数：深拷贝 List（这里假设 List 中可能包含 Map 或其他需要深拷贝的对象）
  static List deepCopyList(List original) {
    List copy = [];
    for (var item in original) {
      if (item is List) {
        copy.add(deepCopyList(item));
      } else if (item is Map) {
        copy.add(deepCopyMap(item));
      } else {
        copy.add(item); // 对于基本数据类型，直接赋值就是复制
      }
    }
    return copy;
  }

  /// 辅助函数：深拷贝 Map（这里假设 Map 的值可能是 List 或其他需要深拷贝的对象）
  static Map deepCopyMap(Map original) {
    Map copy = {};
    for (var entry in original.entries) {
      var key = entry.key;
      var value = entry.value;

      /// 同上，检查并递归深拷贝 List、Map 或自定义对象
      if (value is List) {
        value = deepCopyList(value);
      } else if (value is Map) {
        value = deepCopyMap(value);
      }

      copy[key] = value;
    }
    return copy;
  }
}
